home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Bavarian / Bavarian #088 (19xx)(APS Electronic).zip / Bavarian #088 (19xx)(APS Electronic).adf / max (.txt) < prev    next >
AmigaBASIC Source Code  |  1986-12-20  |  26KB  |  502 lines

  1.  
  2.  werte:   DEF FNfu1(x)=SIN(x)      : fu1$ = "y1 = sin(x)"         
  3.           DEF FNfu2(x)=x           : fu2$ = "y2 = x"
  4.           DEF FNfu3(x)=x^2         : fu3$ = "y3 = x²"
  5.                                                    
  6.     SCREEN 1,320,200,5,1 : WINDOW 2,,(0,0)-(631,186),16
  7.     PALETTE 0,0.24,0.36,1 : PALETTE 3,0,0,0 : a=-10 : b=10
  8. tafel:  WINDOW OUTPUT 2 : CLS : WIDTH "scrn:",80 : LOCATE 2,2
  9.    PRINT "«««    MATHE-MAX  V0.7    »»»                                  by EAGLE 6/87" 
  10.    LOCATE 5,1 :REM                  ...
  11.    PRINT "  < > .......................primzahlen     < > ........funktionen.ZEICHNEN" : PRINT
  12.    PRINT "  < > .........quadratische.gleichungen     < > ...........funktionsTABELLE" : PRINT
  13.    PRINT "  < > .....lineare.funktionsgleichungen     < > ....SCHNITTSTELLEN y1-y2-y3" : PRINT
  14.    PRINT "  < > quadratische.funktionsgleichungen     < > ......NULLSTELLENberechnung" : PRINT  
  15.    LOCATE 13,45 : PRINT "< > .....STEIGUNGs-berechnungen" : PRINT
  16.    LOCATE 15,45 : PRINT "< > .......MIN-MAX.berechnungen" : PRINT
  17.    LOCATE 17,45 : PRINT "< > ......FLAECHEN-berechnungen" : PRINT                                                                                  
  18.    LOCATE 19,45 : PRINT "< > ...DIFFERENTIATIONS-FORMELN"
  19.    LOCATE 15,3 : PRINT "> ";fu1$ 
  20.    LOCATE 17,3 : PRINT "> ";fu2$
  21.    LOCATE 19,3 : PRINT "> ";fu3$;
  22.    LOCATE 23,45 : PRINT "< > .......................ENDE";
  23.   verzweigung: GOSUB checkmouse 
  24.    IF x<22 OR x>36 THEN verzw2
  25.    IF y>32 AND y<38 THEN primzahlen
  26.    IF y>48 AND y<54 THEN quadrgl
  27.    IF y>64 AND y<70 THEN lingleich
  28.    IF y>80 AND y<86 THEN qufugl 
  29.   verzw2: IF x<358 OR x>372 THEN verzweigung
  30.    IF y>32 AND y<38 THEN eingabe 
  31.    IF y>48 AND y<54 THEN wertetab
  32.    IF y>64 AND y<70 THEN schnittpu
  33.    IF y>80 AND y<86 THEN nullstellen
  34.    IF y>96 AND y<102 THEN steigung
  35.    IF y>112 AND y<118 THEN minmax
  36.    IF y>128 AND y<134 THEN flaechen
  37.    IF y>144 AND y<150 THEN grundform
  38.    IF y>176 AND y<182 THEN SYSTEM
  39.    GOTO verzweigung
  40.  checkmouse: IF MOUSE(0) >0 THEN z=1 :ELSE checkmouse
  41.    x = MOUSE(1) : y = MOUSE(2) : RETURN
  42.  primzahlen: 
  43.    WINDOW 3 ,"primzahlen" ,(50,45)-(575,150),0 : WIDTH "scrn:",65
  44.   priman: CLS : LOCATE 4,12
  45.    PRINT "solle eine zahl ueberprueft werden  < o >"
  46.    PRINT : PRINT "           oder ein bestimmter bereich         < o >"
  47.    PRINT : PRINT "           oder zurueck zum menue              < o >"
  48.   primchm: GOSUB checkmouse
  49.    IF x>375 AND x<412 AND y>24 AND y<30 THEN primei
  50.    IF x>375 AND x<412 AND y>56 AND y<62 THEN WINDOW CLOSE 3 : GOTO verzweigung
  51.    IF x>375 AND x<412 AND y>40 AND y<46 THEN primbe :ELSE primchm
  52.   primbe: CLS : PRINT : INPUT "  bereich von ";a&: LOCATE 2,35 : INPUT "bis ";b& : PRINT
  53.    IF a&/2 = INT (a&/2) THEN a& = a&+1
  54.    a&=a&-2 : IF a&<0 THEN a&=1
  55.   primho: a& = a& + 2 : IF MOUSE (0) > 0 THEN primab2
  56.    FOR j% = 3 TO SQR (a&) STEP 2
  57.    IF a&/j% = INT (a&/j%) THEN GOTO primho        
  58.    NEXT j% : IF a&>b& THEN primab1 :ELSE PRINT a&;
  59.    GOTO primho
  60.   primei: CLS : PRINT : INPUT "  welche zahl soll ueberprueft werden ";a&
  61.    IF a&<0 THEN primab1
  62.    PRINT : PRINT "  die zahl ist durch folgende zahlen teilbar : ";
  63.    c%=3 : d%=2 : IF a&/2 = INT(a&/2) THEN c%=2 : d%=1
  64.    FOR i = c% TO SQR (a&) STEP d%
  65.    b&=a&/i : IF a&/i = b& THEN PRINT i;: IF b&<>i THEN PRINT a&/i;
  66.    IF MOUSE(0) > 0 THEN primab2
  67.    NEXT i
  68.   primab1:  PRINT: PRINT : LOCATE 13 , 2 : PRINT "<< o >>";
  69.   warte: GOSUB checkmouse : GOTO priman 
  70.   primab2: PRINT :PRINT :LOCATE 13,53 :PRINT "<< abbruch >>";: GOTO warte
  71. quadrgl: 
  72.    WINDOW 3 ,"quadratische gleichungen" ,(50,45)-(575,150),0 : REM WIDTH "scrn:",65
  73.   quadan: CLS : LOCATE 4,12
  74.    PRINT "es gilt die form :       x² + p*x + q = 0"
  75.    PRINT : PRINT "           eingabe von p und q                 < o >"
  76.    PRINT : PRINT "           oder zurueck zum menue              < o >"
  77.   quadchm: GOSUB checkmouse
  78.    IF x>375 AND x<412 AND y>56 AND y<62 THEN WINDOW CLOSE 3 : GOTO verzweigung
  79.    IF x>375 AND x<412 AND y>40 AND y<46 THEN quadre :ELSE quadchm  
  80.   quadre: LOCATE 10,2 : INPUT "p = ";p# : LOCATE 11,2 : INPUT "q = ";q#
  81.     IF p#*p#/4 < q# THEN LOCATE 13,12 : PRINT "hat keine reelle loesung";: GOTO quaden
  82.     x1# = -(p#/2)+SQR(-q#+(p#/2)^2) : x2# = -(p#/2)-SQR(-q#+(p#/2)^2)
  83.     LOCATE 10,48 : PRINT "x1 = ";: PRINT USING "#####.#####";x1#
  84.     LOCATE 12,48 : PRINT "x2 = ";: PRINT USING "#####.#####";x2#   
  85.   quaden: LOCATE 13 , 2 : PRINT "<< o >>";
  86.   quadwa: GOSUB checkmouse : GOTO quadan
  87. lingleich:                    
  88.    WINDOW 3 ,"lineare funktionsgleichungen" ,(50,45)-(575,150),0 
  89.   linan: CLS : LOCATE 2,10
  90.    PRINT "lineare funktionsgleichung mit 2 punktangaben"
  91.    PRINT : PRINT "           eingabe der steigung in einem punkt < o >"
  92.    PRINT : PRINT "           eingabe der zwei punte              < o >"
  93.    PRINT : PRINT "           oder zurueck zum menue              < o >"
  94.   linchm: GOSUB checkmouse
  95.    IF x>375 AND x<412 AND y>56 AND y<62 THEN WINDOW CLOSE 3 : GOTO verzweigung
  96.    IF x>375 AND x<412 AND y>24 AND y<30 THEN linst
  97.    IF x>375 AND x<412 AND y>40 AND y<46 THEN linbe :ELSE linchm
  98.   linbe: LOCATE 10,2 : INPUT " p1 = ( x,y ) ";x1#,y1# : LOCATE 11,2
  99.    INPUT " p2 = ( x,y ) ";x2#,y2# : IF x1# = x2# THEN linwa
  100.   linre: p1# = ( y2# - y1# ) / ( x2# - x1# ) : p2# = y1# - p1# * x1#
  101.    LOCATE 13,20 : PRINT "y =";: PRINT USING "#####.#####";p1#;
  102.    PRINT " * x ";: IF p2# >=0 THEN PRINT "+";
  103.    PRINT USING "#####.#####";p2#;
  104.   linwa: LOCATE 13,2 : PRINT " << o >>";
  105.   linmc: IF MOUSE(0) > 0 THEN linan :ELSE linmc
  106.   linst: LOCATE 10,3 : INPUT "p1 = ( x,y ) ";x1#,y1#
  107.    INPUT "  steigung : ";m# : x2# = x1# + 1 : y2# = y1# + m# : GOTO linre
  108. qufugl: 
  109.    WINDOW 3 ,"quadratische funktions-gleichungen" ,(50,45)-(575,150),0 
  110.   qufuan: CLS : LOCATE 2,1
  111.    PRINT " eingabe von :  3 funktions-punkten                       < o >"
  112.    PRINT "                2 funktions-punkten  { normalparabel }    < o >"
  113.    PRINT "                1 funktions-punkt + scheitelpunkt         < o >"
  114.    PRINT : PRINT "                oder zurueck zum menue                    < o >"
  115.   qufuchm: GOSUB checkmouse
  116.    IF x>470 AND x<500 AND y>40 AND y<46 THEN WINDOW CLOSE 3 : GOTO verzweigung
  117.    IF x>470 AND x<500 AND y>8  AND y<14 THEN qufu3
  118.    IF x>470 AND x<500 AND y>16 AND y<22 THEN qufu2
  119.    IF x>470 AND x<500 AND y>24 AND y<30 THEN qufu1 :ELSE qufuchm  
  120.   qufu3: LOCATE 8,1 : INPUT "  p1 ( x1,y1 ) ";x1#,y1#
  121.    INPUT "  p2 ( x2,y2 ) ";x2#,y2# : INPUT "  p3 ( x3,y3 ) ";x3#,y3#
  122.   qufuber: z# = y1# *( x2#^2-x3#^2 ) + y2# *( x3#^2 - x1#^2 ) + y3# *( x1#^2 -x2#^2 )
  123.    w# = x1# *( x2#^2-x3#^2 ) + x2# *( x3#^2 - x1#^2 ) + x3# *( x1#^2 -x2#^2 )
  124.    IF w# = 0 THEN qufuwa
  125.    a1# = z#/w# 
  126.    a2# = ( y2# - a1# *( x2#-x3# ) - y3# ) / ( x2#^2 - x3#^2 )
  127.    a0# = y3# - a2# * x3#^2 - a1# * x3#
  128.   qufuda: LOCATE 13,3 : PRINT "y = ";: PRINT USING "#####.#####";a2#;
  129.    PRINT " * x² ";:  IF a1#>=0 THEN PRINT " +";
  130.    PRINT USING "#####.#####";a1#;: PRINT " * x ";: IF a0#>=0 THEN PRINT " +";
  131.    PRINT USING "#####.#####";a0#; 
  132.   qufuwa: LOCATE 11,57 : PRINT "<< o >>";
  133.   qufucm: GOSUB checkmouse : GOTO qufuan
  134.   qufu1:  LOCATE 9,1 : INPUT "  scheitelpunkt ( xs,ys ) ";x2#,y2#
  135.    INPUT "  p2 ( x2,y2 ) ";x1#,y1# : x3# = 2 * x2# - x1# : y3# = y1#:GOTO qufuber
  136.   qufu2: LOCATE 8,17 : PRINT "oeffnung nach   <o> ben   oder   <u> nten"
  137.   qufuhm: GOSUB checkmouse
  138.    IF x>262 AND x<276 AND y>56 AND y<62 THEN a2# = 1 : GOTO qufuw2
  139.    IF x>397 AND x<411 AND y>56 AND y<62 THEN a2# = -1 :ELSE qufuhm
  140.   qufuw2: LOCATE 10,1 : INPUT "  p1 ( x1,y1 ) ";x1#,y1# : INPUT "  p2 ( x2,y2 ) ";x2#,y2#
  141.    IF x2# - x1# = 0 THEN qufuwa
  142.    a1# = ( y2# - a2# * x2#^2 - y1# + a2# * x1#^2 ) / ( x2# - x1# )
  143.    a0# = y1# - a2# * x1#^2 - a1# * x1# : GOTO qufuda
  144. eingabe: WINDOW 3,"bereichs-eingabe",(120,50)-(500,131),0 : WIDTH"scrn:",45
  145.     PRINT : PRINT "     zeichnen von funktion      1    < >"
  146.     PRINT : PRINT "     zeichnen von funktion    1+2    < >"
  147.     PRINT : PRINT "     zeichnen von funktion  1+2+3    < >" : nur=0
  148. einch: GOSUB checkmouse : IF x<302 OR x>316 THEN eich
  149.     IF y>8  AND y<14 THEN nur=1
  150.     IF y>24 AND y<30 THEN nur=2
  151.     IF y>40 AND y<46 THEN nur=3
  152.     IF nur <1 THEN einch
  153. beran: CLS : PRINT : INPUT "  x - bereich von : ";a 
  154.     INPUT "              bis : ";b : PRINT
  155.     INPUT "  y - bereich von : ";d : INPUT "              bis : ";e 
  156.     PRINT : INPUT "  scalierung von x : ";t
  157.     INPUT "  scalierung von y : ";u  
  158.     IF a>b THEN SWAP a,b
  159.     IF d>e THEN SWAP d,e
  160.     IF t=0 OR u=0 THEN beran
  161.     IF a=b OR d=e THEN beran
  162.     IF a <= 0 AND b > 0 THEN c = (ABS(a)+b)/630
  163.     IF b <= 0 THEN c = (ABS(a)-ABS(b))/630
  164.     IF a > 0  THEN c = (b-a)/630
  165.     IF a > 0  THEN k = b-a
  166.     IF b <= 0 THEN k = ABS(a)-ABS(b)
  167.     IF d > 0  THEN l = e-d
  168.     IF e <= 0 THEN l = ABS(d)-ABS(e)
  169.     IF a <= 0 AND b > 0 THEN k = -a+b
  170.     IF d <= 0 AND e > 0 THEN l = -d+e
  171.     IF t >= k OR u >= l THEN beran
  172.     f = INT (ABS(a)*632/k) : g = INT (ABS(d)*194/l)
  173.     WINDOW CLOSE 3
  174. kordikr: WINDOW OUTPUT 2 : CLS
  175.     IF a=0 AND d=0 THEN LINE (0,0)-(0,194),3 : LINE (0,194)-(630,194),3 : GOTO scala
  176.     IF b=0 AND d=0 THEN LINE (630,0)-(630,194),3 : LINE (0,194)-(630,194),3 : GOTO scala
  177.     IF b=0 AND e=0 THEN LINE (0,0)-(630,0),3 : LINE (630,0)-(630,194),3 : GOTO scala
  178.     IF a=0 AND e=0 THEN LINE (0,0)-(0,194),3 : LINE (0,0)-(630,0),3 : GOTO scala
  179.     IF b<=0 AND d>=0 THEN LINE (0,194)-(605,194),3 : LINE (630,0)-(630,184),3 : GOTO scala
  180.     IF a>0 AND d>0 THEN LINE (0,0)-(0,184),3 : LINE (25,194)-(630,194),3 : GOTO scala
  181.     IF b<=0 AND e<=0 THEN LINE (0,0)-(605,0),3 : LINE (630,10)-(630,194),3 : GOTO scala
  182.     IF a>0 AND e<=0 THEN LINE (25,0)-(630,0),3 : LINE (0,10)-(0,194),3 : GOTO scala
  183.     IF a<=0 AND b>0 AND d<0 AND e>0 THEN LINE (0,194-g)-(630,194-g),3 : LINE (f,0)-(f,194),3 : GOTO scala
  184.     IF a<=0 AND b>0 AND d>=0 THEN LINE (0,194)-(630,194),3 : LINE (f,0)-(f,184),3 : GOTO scala
  185.     IF a<=0 AND b>0 AND e<=0 THEN LINE (0,0)-(630,0),3 : LINE (f,10)-(f,194),3 : GOTO scala
  186.     IF a>=0 AND d<=0 AND e>0 THEN LINE (0,0)-(0,194),3 : LINE (25,194-g)-(630,194-g),3 : GOTO scala
  187.     IF b<=0 AND d<0 AND e>0 THEN LINE (630,0)-(630,194),3 : LINE (0,194-g)-(605,194-g),3
  188. scala:   v = 630/k : w = 194/l
  189.     IF ABS(a/t) = INT(ABS(a/t)) THEN panfx=0 : GOTO scaly 
  190.     xanf = INT(ABS(a)/t)*t 
  191.     IF a>0 THEN xanf = xanf+t
  192.     panfx = (ABS(ABS(a)-xanf))*v 
  193. scaly: IF ABS(e/u) = INT(ABS(e/u)) THEN panfy=0 : GOTO puber
  194.     yanf = INT(ABS(e)/u)*u
  195.     panfy = (ABS(ABS(e)-yanf))*w
  196. puber: IF f<5 THEN f=5
  197.     IF f>625 THEN f=625
  198.     IF g<3 THEN g=3
  199.     IF g>191 THEN g=191
  200.     IF a>=0 THEN p6=0 : p7=10
  201.     IF b<=0 THEN p6=620 : p7=630
  202.     IF a<0 AND b>0 THEN p6=f-5 : p7=f+5
  203.     IF d>=0 THEN p4=188 : p5=194
  204.     IF e<=0 THEN p4=0 : p5=6
  205.     IF d<0 AND e>0 THEN p4=191-g : p5=197-g
  206.          
  207. scazei: FOR i = panfx TO 630 STEP (v*t) : LINE (i,p4)-(i,p5),3 : NEXT i
  208.     FOR i = panfy TO 194 STEP (w*u) : LINE (p6,i)-(p7,i),3 : NEXT i
  209. zuordnung: IF a = 0 THEN a = 0.0001
  210.     IF b = 0 THEN b = -0.0001
  211.     IF d = 0 THEN d = 0.0001
  212.     IF e = 0 THEN e = -0.0001
  213. sektor: FOR i = 1 TO nur : arno = 0
  214.     FOR x = a TO b STEP c 
  215.     IF i = 1 THEN y=FNfu1(x)
  216.     IF i = 2 THEN y=FNfu2(x)
  217.     IF i = 3 THEN y=FNfu3(x)  
  218.     IF b<0 THEN p1=632/k*(x+ABS(a))
  219.     IF a>0 THEN p1=632/k*(x-a)
  220.     IF d>0 THEN p2=194-194/l*(y-d)
  221.     IF e<0 THEN p2=-194/l*(y+ABS(e))
  222.     IF a<0 AND b>0 THEN p1=632/k*x+f
  223.     IF d<0 AND e>0 THEN p2=194-194/l*y-g
  224.     IF p1<0 OR p1>632 OR p2<0 OR p2>194 THEN arno=0 : GOTO sektor1
  225.     IF arno=0 THEN arno=1 : PSET (p1,p2),i
  226.     LINE -(p1,p2),i
  227. sektor1: NEXT x : NEXT i   
  228.  
  229. fertig:  IF a = 0.0001 THEN a=0
  230.     IF b = -0.0001 THEN b=0
  231.     IF d = 0.0001 THEN d=0
  232.     IF e = -0.0001 THEN e=0
  233.     WINDOW 3,"funktions-menue",(120,50)-(500,131),2
  234.     PRINT : PRINT "  -   funktionen ZEIGEN & ABLESEN"
  235.     PRINT : PRINT "      von funktionswerten          < >"
  236.     PRINT : PRINT "  -   DARSTELLUNGSBEREICH aendern  < >"
  237.     PRINT : PRINT "  -   zurueck zum MENUE            < >"
  238. schleife: GOSUB checkmouse : wa=0
  239.     IF x<286 OR x>300 THEN schleife
  240.     IF y>24 AND y<30 THEN wa=1
  241.     IF y>40 AND y<46 THEN wa=2
  242.     IF y>56 AND y<62 THEN wa=3
  243.     IF wa<1 THEN schleife
  244.     WINDOW CLOSE 3 : IF wa=3 THEN tafel
  245.     IF wa=2 THEN eingabe
  246.     WINDOW 3,"darstellungsbereich :",(10,140)-(600,180),18
  247.     WIDTH "scrn:",75 : PRINT " > ";fu1$ : LOCATE 1,40
  248.     PRINT " > ";fu2$ : PRINT " > ";fu3$ 
  249.     PRINT " x : von ";a : LOCATE 3,27 : PRINT "bis ";b 
  250.     PRINT " y : von ";d : LOCATE 4,27 : PRINT "bis ";e
  251.     PRINT " scalierung x,y : ";t;" ";u; : LOCATE 5,54 
  252.     PRINT "<< hier anklicken >>";
  253. wertescala: IF MOUSE(0) = 0 THEN wertescala
  254.     r = MOUSE(3) : s = MOUSE(4)
  255.     x1=a+(k/632)*r : y1=d+(l/194)*(194-s)
  256.     v = WINDOW(0) : IF v = 3 AND r>430 AND s>15 THEN WINDOW CLOSE 3 : GOTO fertig
  257.     IF v <> 2 THEN wertescala
  258.     LOCATE 3,55 : PRINT "x = "; : PRINT USING " #####.#####";x1
  259.     LOCATE 4,55 : PRINT "y = "; : PRINT USING " #####.#####";y1
  260.     GOTO wertescala
  261. wertetab:
  262.     WINDOW 3 ,"werte-tabellen" ,(115,45)-(515,126),0 : WIDTH "scrn:",65
  263.     PRINT : INPUT " von : ";anf : LOCATE 2,20 : INPUT " bis : ";schl
  264.     PRINT : INPUT " schrittweite : ";schr
  265.     schr=ABS(schr) : IF anf > schl THEN SWAP anf,schl
  266.     FOR rt = 1 TO 3 : CLS
  267.     IF rt=1 THEN PRINT " ";fu1$
  268.     IF rt=2 THEN PRINT " ";fu2$
  269.     IF rt=3 THEN PRINT " ";fu3$
  270.     za=2 : PRINT : FOR i = anf TO schl STEP schr
  271.     za=za+1 : IF za=10 THEN za=3 : GOSUB checkmouse 
  272.     IF rt = 1 THEN y=FNfu1(i)
  273.     IF rt = 2 THEN y=FNfu2(i)
  274.     IF rt = 3 THEN y=FNfu3(i)  
  275.     j=i/5.30795e-315 : LOCATE za,3 : PRINT USING " #####.#####";i
  276.     LOCATE za,20 : PRINT USING " #####.#####";y 
  277.     LOCATE za,37 : PRINT USING "####.##";j;: PRINT " * phi";
  278.     NEXT i : LOCATE 1,42 : PRINT "<< ok >>": GOSUB checkmouse 
  279.     NEXT rt : WINDOW CLOSE 3 : GOTO verzweigung
  280. steigung:  WINDOW 3,"steigungswerte",(150,45)-(475,85),0 : WIDTH "scrn:",65        
  281.     INPUT " welche x-stelle : ";xst# : PRINT : xst1#=xst#-0.0001 : xst#=xst#+0.0001
  282.     y1# = FNfu1(xst1#) : y2# = FNfu1(xst#) : ste# = (y2#-y1#)/(xst#-xst1#)
  283.     PRINT " fuer funktion 1 : ";:PRINT USING " #####.###";ste#;
  284.     PRINT USING "    ##.##";steg;:PRINT "°"
  285.     y1# = FNfu2(xst1#) : y2# = FNfu2(xst#) : ste# = (y2#-y1#)/(xst#-xst1#)
  286.     PRINT " fuer funktion 2 : ";:PRINT USING " #####.###";ste#;
  287.     PRINT USING "    ##.##";steg;:PRINT "°"
  288.     y1# = FNfu3(xst1#) : y2# = FNfu3(xst#) : ste# = (y2#-y1#)/(xst#-xst1#)
  289.     PRINT " fuer funktion 3 : ";:PRINT USING " #####.###";ste#;
  290.     PRINT USING "    ##.##";steg;:PRINT "°";
  291.     LOCATE 1,34 : PRINT "< ok >" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
  292. flaechen:  WINDOW 3,"flaechenberechnung",(180,45)-(450,85),0 : WIDTH "scrn:",65         
  293.     PRINT " fuer welche funktion ?" : PRINT
  294.     PRINT "  funktion 1          < o >"
  295.     PRINT "  funktion 2          < o >" 
  296.     PRINT "  funktion 3          < o >";
  297.  flaewa: GOSUB checkmouse : flfu=0 : IF x<182 OR x>212 THEN flaewa
  298.     IF y>16 AND y<22 THEN flfu=1 
  299.     IF y>24 AND y<30 THEN flfu=2
  300.     IF y>32 AND y<38 THEN flfu=3
  301.     IF flfu<1 THEN flaewa 
  302.     CLS : PRINT " gilt nur fuer  y";flfu
  303.     INPUT " von x1 : ";a12# : INPUT " bis x2 : ";a13#
  304.     a10#=0 : IF a12# > a13# THEN SWAP a12#,a13#
  305.     a11#=(a13#-a12#)/500 : x1#=a12# : FOR i% = 1 TO 500 : x#=x1#
  306.     IF flfu=1 THEN y#=FNfu1(x#)
  307.     IF flfu=2 THEN y#=FNfu2(x#)
  308.     IF flfu=3 THEN y#=FNfu3(x#) 
  309.     y1#=y# : x2#=x1#+a11# : x#=x2# 
  310.     IF flfu=1 THEN y#=FNfu1(x#)
  311.     IF flfu=2 THEN y#=FNfu2(x#)
  312.     IF flfu=3 THEN y#=FNfu3(x#) 
  313.     a10#=a10#+a11#*y1#+a11#*(y#-y1#)/2 : x1#=a12#+i%*a11# : NEXT
  314.     PRINT : PRINT " flaeche : "; : PRINT USING " #####.#####";a10#; : PRINT" E²";
  315.     LOCATE 1,28 : PRINT "< ok >" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
  316. nullstellen: WINDOW 3,"nullstellen",(150,45)-(475,142),0 : WIDTH "scrn:",65
  317.     PRINT : PRINT " fuer funktion ?   < 1 >   < 2 >   < 3 >" : fu=0
  318. nullchm1: GOSUB checkmouse : IF y<8 OR y>14 THEN nullchm1
  319.     IF x>157 AND x<187 THEN fu=1
  320.     IF x>222 AND x<252 THEN fu=2
  321.     IF x>286 AND x<316 THEN fu=3
  322.     IF fu<1 THEN nullchm1
  323.     PRINT : PRINT " die berechnung erfolgt im dargestellten"
  324.     PRINT : PRINT "   bereich  - wenn noch nicht bestimmt"
  325.     PRINT : PRINT "          von  - 10   bis   10" : a10=b : a12=a : a13=b : PRINT
  326.   nulla1: a11=(a13-a12)/40 : a15=a12 : FOR i% = 1 TO 40 : a14=a15+a11 : x=a15
  327.     IF fu=1 THEN y=FNfu1(x) : y1=y : x=a14 : y=FNfu1(x)
  328.     IF fu=2 THEN y=FNfu2(x) : y1=y : x=a14 : y=FNfu2(x)
  329.     IF fu=3 THEN y=FNfu3(x) : y1=y : x=a14 : y=FNfu3(x)
  330.     IF y1<0 AND y>0 THEN a12=a15 : a13=a14 : GOTO nulla1
  331.     IF y1>0 AND y<0 THEN a12=a15 : a13=a14 : GOTO nulla1
  332.     IF y1=0 THEN v=a15 : GOTO nullaus
  333.     IF y =0 THEN v=a14 : GOTO nullaus
  334.     a15=a14 : NEXT i% : v=a15
  335.     IF a10-0.01 < a14 THEN PRINT : PRINT "       durchgerechnet   <«»>" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
  336.   nullaus: PRINT " bei x = ";: PRINT USING " #####.#####";v;: PRINT USING "   = ###.## * phi";(v/3.1415)
  337.     a13=a10 : a12=v+0.01 : GOTO nulla1
  338. grundform: CLS : LOCATE 2,7 : PRINT "<< GRUNDFORMELN ZUR DIFFERENTIATION ALGEBRAISCHER FUNKTIONEN >>" : WIDTH "scrn:",80
  339.     LOCATE 5,3 : PRINT "potenzregel:       y = x^n                 y' = n*x^(n-1)"
  340.     PRINT : PRINT "  konstantenregel:   y = a*x^n               y' = a*n*x^(n-1)"
  341.     PRINT "                     y = a                   y' = 0"
  342.     PRINT : PRINT "  summenregel:       y = f1(x) ± f2(x)...    y' = f1'(x) ± f2'(x)..."
  343.     PRINT : PRINT "  quotientenregel:   y = u(x) / v(x)         y' = (u'*v - v'*u) / v^2"
  344.     PRINT : PRINT "  kettenregel:       y = f(z) = f[g(x)]      y' = f'(z) * g'(x)"
  345.     PRINT : PRINT "  produktenregel:    y = u(x) * v(x)         y' = u' * v + v' * u"
  346.     LOCATE 17,46 : PRINT "y' = u * v * ( u'/u + v'/v )"
  347.     LOCATE 19,22 : PRINT "y = u * v *w            y' = u'*v*w + u*v'*w + u*v*w'"
  348.     LOCATE 21,22 : PRINT "oder     y' = u*v*w * ( u'/u + v'/v + w'/w )"
  349.     LOCATE 24,46 : PRINT "weiter < >            menue < >";
  350.  grchm: GOSUB checkmouse : IF y<184 OR y>190 THEN grchm
  351.     IF x>422 AND x<436 THEN grundf2
  352.     IF x>590 AND x<604 THEN tafel
  353.     GOTO grchm
  354.  grundf2: CLS : LOCATE 2,7 : PRINT "<< GRUNDFORMELN ZUR DIFFERENTIATION TRANSZENDENTER FUNKTIONEN >>"
  355.     LOCATE 6,3 : PRINT "EXPONENTIALFUNKTIONEN:"
  356.     PRINT : PRINT "     y = b^x                      y' = b^x * ln(b)"
  357.     PRINT "     y = b^(a*x)                  y' = a * b^(a*x) * ln(b)"
  358.     PRINT "     y = e^x                      y' = e^x"
  359.     PRINT "     y = e^(a*x)                  y' = a * e^(a*x)"
  360.     PRINT "     y = e^x * x^n                y' = e^x * x^(n-1) * (n+x)"
  361.     PRINT "     y = x^x                      y' = x^x * [ 1+ln(x) ]"
  362.     PRINT : PRINT "  LOGARITHMISCHE FUNKTIONEN:" : PRINT 
  363.     PRINT "     y = log{b}(x)                y' = 1 / [ x*ln(b) ]"
  364.     PRINT "     y = log{b}(a*x)              y' = 1 / [ x*ln(b) ]"
  365.     PRINT "     y = ln(x)                    y' = 1/x"
  366.     PRINT "     y = ln(a*x)                  y' = 1 / (a*x)"
  367.     PRINT "     y = ln [(1+x)/(1-x)]         y' = 2 / (1-x^2)"
  368.     LOCATE 24,46 : PRINT "weiter < >            menue < >";
  369.  grchm2: GOSUB checkmouse : IF y<184 OR y>190 THEN grchm2
  370.     IF x>422 AND x<436 THEN grundf3
  371.     IF x>590 AND x<604 THEN tafel
  372.     GOTO grchm2
  373.  grundf3: CLS : LOCATE 1,2 : PRINT"TRIGONOMETRISCHE FUNKTIONEN :"
  374.     LOCATE 3,3 : PRINT "y = sin(x)             y' =   cos(x)"
  375.     PRINT "  y = cos(x)             y' = - sin(x)"
  376.     PRINT "  y = tan(x)             y' =   1 / cos^2(x)"
  377.     LOCATE 6,26 : PRINT "y' =   1 + tan^2(x)"
  378.     PRINT "  y = cot(x)             y' = - 1 / sin^2(x)"
  379.     LOCATE 8,26 : PRINT "y' = - 1 - cot^2(x)"
  380.     PRINT "  y = sec(x)             y' =   sin(x) / cos^2(x)"
  381.     LOCATE 10,26 : PRINT "y' =   tan(x) * sec(x)"
  382.     PRINT "  y = cosec(x)           y' = - cos(x) / sin^2(x)"
  383.     LOCATE 12,26 : PRINT "y' = - cot(x) * cosec(x)"
  384.     PRINT "  y = a * sin(b*x)       y' =   a * b * cos(b*x)"
  385.     PRINT "  y = a * cos(b*x)       y' = - a * b * sin(b*x)"
  386.     PRINT "  y = a * tan(b*x)       y' =   (a*b) / cos^2(b*x)"
  387.     LOCATE 16,26 : PRINT "y' =   a * b * [ 1 + tan^2(b*x) ]"
  388.     PRINT "  y = a * cot(b*x)       y' = - (a*b) / sin^2(b*x)"
  389.     LOCATE 18,26 : PRINT "y' = - a * b * [ 1 + cot^2(b*x) ]"
  390.     PRINT "  y = sin^n(x)           y' =   n * sin^(n-1)(x) * cos(x)"
  391.     PRINT "  y = cos^n(x)           y' = - n * cos^(n-1)(x) * sin(x)"
  392.     PRINT "  y = tan^n(x)           y' =   n * tan^(n-1)(x) * [ 1 + tan^2(x) ]"
  393.     PRINT "  y = cot^n(x)           y' = - n * cot^(n-1)(x) * [ 1 + cot^2(x) ]"
  394.     PRINT "  y = x * sin(x)         y' =   x * cos(x) + sin(x)"
  395.     LOCATE 24,46 : PRINT "weiter < >            menue < >";
  396.  grchm3: GOSUB checkmouse : IF y<184 OR y>190 THEN grchm3
  397.     IF x>422 AND x<436 THEN grundf4
  398.     IF x>590 AND x<604 THEN tafel
  399.     GOTO grchm3
  400.  grundf4: CLS : LOCATE 2,3 : PRINT "ZYKLOMETRISCHE FUNKTIONEN:" : PRINT
  401.     PRINT "  y = arc sin(x)      y' =   1 / sqr(1-x^2)      ;fuer -1 <= x <= 1"
  402.     PRINT "  y = arc cos(x)      y' = - 1 / sqr(1-x^2)      ;fuer -1 <= x <= 1"
  403.     PRINT "  y = arc tan(x)      y' =   1 / ( 1 + x^2 )"
  404.     PRINT "  y = arc cot(x)      y' = - 1 / ( 1 + x^2 )"
  405.     PRINT : PRINT "  HYPERBELFUNKTIONEN:" : PRINT
  406.     PRINT "  y = sinh(x)         y' = cosh(x)"
  407.     PRINT "  y = cosh(x)         y' = sinh(x)"
  408.     PRINT "  y = tanh(x)         y' = 1 - tanh^2(x)    oder    y' =   1 / cosh^2(x)"
  409.     PRINT "  y = coth(x)         y' = 1 - coth^2(x)    oder    y' = - 1 / sinh^2(x)"
  410.     PRINT : PRINT "  AREAFUNKTIONEN:" : PRINT 
  411.     PRINT "  y = ar sinh(x)      y' = 1 / sqr(x^2+1)"
  412.     PRINT "  y = ar cosh(x)      y' = 1 / sqr(x^2-1)        ;fuer       x >= 1" 
  413.     PRINT "  y = ar tanh(x)      y' = 1 / ( 1 - x^2 )       ;fuer -1 <= x <= 1"
  414.     PRINT "  y = ar coth(x)      y' = 1 / ( 1 - x^2 )       ;fuer -1 >= x >= 1"
  415.     LOCATE 24,68 : PRINT "menue < >";
  416.  grchm4: GOSUB checkmouse : GOTO tafel
  417. minmax: WINDOW 3,"min-max",(150,45)-(475,142),0 : WIDTH "scrn:",65
  418.     PRINT : PRINT " fuer funktion ?   < 1 >   < 2 >   < 3 >" : fu=0
  419.   mmchm: GOSUB checkmouse : IF y<8 OR y>14 THEN mmchm
  420.     IF x>157 AND x<187 THEN fu=1
  421.     IF x>222 AND x<252 THEN fu=2
  422.     IF x>286 AND x<316 THEN fu=3
  423.     IF fu<1 THEN mmchm
  424.     PRINT : PRINT " die berechnung erfolgt im dargestellten"
  425.     PRINT : PRINT " bereich : ";a;" bis ";b
  426.     PRINT : a10=a : a11=b 
  427.     a13=a11 : a12=(a11-a10)/61 : x=a10 
  428.      IF fu=1 THEN y=FNfu1(x)
  429.      IF fu=2 THEN y=FNfu2(x)
  430.      IF fu=3 THEN y=FNfu3(x)
  431.     y1=y : x=a10+a12
  432.      IF fu=1 THEN y=FNfu1(x)
  433.      IF fu=2 THEN y=FNfu2(x)
  434.      IF fu=3 THEN y=FNfu3(x)
  435.     IF y<y1 THEN mm4
  436.   mm1:  a12=(a11-a10)/61 : FOR i% = 1 TO 61 : x1=a10 : x2=x1+a12 : x3=x2+a12 : x=x1
  437.      IF fu=1 THEN y=FNfu1(x)
  438.      IF fu=2 THEN y=FNfu2(x)
  439.      IF fu=3 THEN y=FNfu3(x)
  440.     y1=y : x=x2
  441.      IF fu=1 THEN y=FNfu1(x)
  442.      IF fu=2 THEN y=FNfu2(x)
  443.      IF fu=3 THEN y=FNfu3(x)
  444.     y2=y : x=x3
  445.      IF fu=1 THEN y=FNfu1(x)
  446.      IF fu=2 THEN y=FNfu2(x)
  447.      IF fu=3 THEN y=FNfu3(x)
  448.     IF y2=y1 AND y1=y THEN mm2
  449.     IF y2>=y1 AND y2>y THEN a10=x1 : a11=x3 : GOTO mm1
  450.     a10=x2 : NEXT i% : a11=a13 : GOTO mm3
  451.    mm2:  IF x2<0.001 AND x2>-0.001 THEN x=0 : :ELSE mm21
  452.      IF fu=1 THEN y=FNfu1(x)
  453.      IF fu=2 THEN y=FNfu2(x)
  454.      IF fu=3 THEN y=FNfu3(x)
  455.     y4=y : IF y4=y2 THEN x2=0
  456.    mm21:  PRINT USING " max bei x,y :  ####.##";x2;: PRINT USING "  , ####.##";y2
  457.     a11=a13 : a10=x2  
  458.    mm3:  IF a13-0.01<x2 THEN PRINT : PRINT " durchgerechnet  <«»>" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
  459.    mm4:  a12=(a11-a10)/61 : FOR i% = 1 TO 61 : x1=a10 : x2=x1+a12 : x3=x2+a12 : x=x1
  460.      IF fu=1 THEN y=FNfu1(x)
  461.      IF fu=2 THEN y=FNfu2(x)
  462.      IF fu=3 THEN y=FNfu3(x)
  463.     y1=y : x=x2
  464.      IF fu=1 THEN y=FNfu1(x)
  465.      IF fu=2 THEN y=FNfu2(x)
  466.      IF fu=3 THEN y=FNfu3(x)
  467.     y2=y : x=x3
  468.      IF fu=1 THEN y=FNfu1(x)
  469.      IF fu=2 THEN y=FNfu2(x)
  470.      IF fu=3 THEN y=FNfu3(x)
  471.     IF y2=y1 AND y1=y THEN mm5
  472.     IF y2<=y1 AND y2<y THEN a10=x1 : a11=x3 : GOTO mm4
  473.     a10=x2 : NEXT i% : a11=a13 : GOTO mm6
  474.    mm5:  IF x2<0.001 AND x2>-0.001 THEN x=0 :ELSE mm51
  475.      IF fu=1 THEN y=FNfu1(x)
  476.      IF fu=2 THEN y=FNfu2(x)
  477.      IF fu=3 THEN y=FNfu3(x)
  478.     y4=y : IF y4=y2 THEN x2=0
  479.    mm51:  PRINT USING " min bei x,y :  ####.##";x2;: PRINT USING "  , ####.##";y2
  480.     a11=a13 : a10=x2
  481.    mm6:  IF a13-0.01<x2 THEN PRINT : PRINT " durchgerechnet  <«»>" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
  482.     a10=x2 : a11=a13 : GOTO mm1
  483. schnittpu: WINDOW 3,"schnittpunkte",(150,45)-(475,142),0 : WIDTH "scrn:",65
  484.     PRINT : PRINT " die berechnung erfolgt im dargestellten"
  485.     PRINT : PRINT " bereich : ";a;" bis ";b : PRINT
  486.     FOR j% = 1 TO 3 : a12=a : a13=b 
  487.   schnitt1: a11=(a13-a12)/40 : FOR x = a12 TO a13 STEP a11
  488.     IF j%=1 THEN y1#=FNfu1(x) : y2#=FNfu2(x) : y3#=FNfu1(x+a11) : y4#=FNfu2(x+a11)
  489.     IF j%=2 THEN y1#=FNfu2(x) : y2#=FNfu3(x) : y3#=FNfu2(x+a11) : y4#=FNfu3(x+a11)
  490.     IF j%=3 THEN y1#=FNfu1(x) : y2#=FNfu3(x) : y3#=FNfu1(x+a11) : y4#=FNfu3(x+a11)
  491.     IF y1#-y2#<1e-06 AND y1#-y2#>-1e-06 THEN v=x : yy=y1# : GOTO schnittaus
  492.     IF y1#<y2# AND y3#>y4# THEN a12=x : a13=x+a11 : GOTO schnitt1
  493.     IF y1#>y2# AND y3#<y4# THEN a12=x : a13=x+a11 : GOTO schnitt1
  494.     NEXT x : v=x
  495.     NEXT j% : PRINT : PRINT "       durchgerechnet   <«»>" : GOSUB checkmouse : WINDOW CLOSE 3 : GOTO verzweigung
  496.   schnittaus: IF j% = 1 THEN PRINT " y1-y2 bei x,y : ";
  497.     IF j% = 2 THEN PRINT " y2-y3 bei x,y : ";   
  498.     IF j% = 3 THEN PRINT " y1-y3 bei x,y : ";  
  499.     PRINT USING "  ####.###";v;: PRINT USING "  ####.###";yy
  500.     a12=x+(b-a)/200 : a13=b : GOTO schnitt1
  501.  
  502.